home *** CD-ROM | disk | FTP | other *** search
/ Great Generals of the 20th Century / Great Generals of the 20th Century.iso / setup.mst < prev    next >
Text File  |  1996-01-25  |  24KB  |  683 lines

  1. rem ****************************************************************************
  2. rem *
  3. rem *    File:        setup.mst
  4. rem *
  5. rem *    Author:        Clive Nutter
  6. rem *
  7. rem *    Purpose:    Script file for MS setup engine.
  8. rem *
  9. rem *    Change History:
  10. rem *
  11. rem *        01.09.95, CLN    Created, based on AV title setup.mst.
  12. rem *        02.09.95, CLN    Added QuickTime version checking.
  13. rem *        03.09.95, CLN    Amended so each promo has its own copy of
  14. rem *                engine.
  15. rem *        06.09.95, CLN    Added code for First World War & War in the
  16. rem *                Pacific promos.
  17. rem *        15.09.95, CLN    Add DLL call to update system configuration.
  18. rem *                Add code to display read-me file.
  19. rem *        09.10.95, CLN    Cater for advert(s) and retail loop variants.
  20. rem *        04.01.96, CLN    Allow selection of VfW and WinToon and engine
  21. rem *                sharing options.
  22. rem *
  23. rem ****************************************************************************
  24.  
  25. '$INCLUDE 'setupapi.inc'
  26. '$INCLUDE 'mscpydis.inc'    ''System
  27. '$INCLUDE 'msdetect.inc'    ''Detects Available Disk Space      
  28. '$INCLUDE 'pmgrdde.inc'        ''Program Manager DDE
  29. '$INCLUDE 'system.inc'        ''FlagTower system configuration
  30. '$INCLUDE 'flagtowr.inc'    ''FlagTower title values
  31.  
  32. ''Dialog ID's
  33. CONST WELCOME       = 100
  34. CONST ASKQUIT       = 200
  35. CONST ASKPATH       = 300
  36. CONST EXITFAILURE   = 400
  37. CONST EXITQUIT      = 600
  38. CONST EXITSUCCESS   = 700
  39. CONST APPHELP       = 900
  40. CONST SMALLWIN      = 2200
  41. CONST RESTART       = 2600
  42. CONST RESTARTII     = 2700
  43. CONST BADPATH       = 6400
  44.  
  45. 'GLOBAL SizeReq&        '' Total Disk Size required for installation
  46.  
  47. GLOBAL WinDir$            ''Windows directory
  48. GLOBAL WinSysDir$        ''Windows system directory
  49. GLOBAL WinSys32Dir$        ''Win32 system directory
  50. GLOBAL MinorVer%        ''Windows minor version number
  51. GLOBAL OnNT$            ''NT flag
  52.  
  53. GLOBAL SrcDir$            ''Source directory                   
  54. GLOBAL CDDrive$            ''CD-Rom drive letter
  55. GLOBAL DbPath$            ''Database directory
  56.  
  57. GLOBAL AVDest$            ''Directory to put AV engine libraries
  58. GLOBAL AVDestRoot$        '' Root directory for title
  59.  
  60. global isInstallQTW as integer
  61.  
  62. ''----- External functions called by Video for Windows setup
  63. DECLARE FUNCTION ExitWindowsExec  LIB "user" (Exec$, Param$) AS INTEGER
  64. DECLARE FUNCTION OnWindowsNT LIB "iniupd.dll" AS INTEGER
  65. DECLARE SUB      Reboot LIB "iniupd.dll"
  66. DECLARE FUNCTION VflatdPresent LIB "iniupd.dll" AS INTEGER
  67. DECLARE FUNCTION WritePrivateProfileString LIB "krnl386.exe" (szSect$, szEntry$, szString$, szINI$) AS INTEGER
  68.  
  69. ''----- External functions called by WinG setup
  70. DECLARE FUNCTION GetRealSystemDirectory LIB "setuphlp.dll" (szDir$, cbBuf%) AS INTEGER
  71. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.dll" (szOrig$, szNew$) AS INTEGER
  72. DECLARE SUB      RenameFilePlease LIB "setuphlp.dll" (szOrig$, szNew$)
  73. DECLARE FUNCTION RestartWindows LIB "setuphlp.dll" AS INTEGER
  74.                  
  75. ''----- Effects library functions used
  76. DECLARE FUNCTION DivertBackMessage LIB "avsetup.dll" (WinHandle%, InstHandle%) AS INTEGER
  77. DECLARE SUB      MaxWindowArea LIB "avsetup.dll" (WinHandle%)
  78. DECLARE FUNCTION ShowBitmap LIB "avsetup.dll" (WinHandle%, szName$, nFx%, nFxTime%) AS INTEGER          
  79. DECLARE FUNCTION SetFileAttribute LIB "avsetup.dll" (szName$, nMode%) AS INTEGER
  80. DECLARE FUNCTION setDOSFileAttr LIB "avsetup.dll" (szName$, nAttr%, nIsOverwrite%) AS INTEGER
  81. DECLARE FUNCTION getSystemRAM LIB "avsetup.dll" AS INTEGER
  82. DECLARE FUNCTION readTitleDescription LIB "avsetup.dll" (szDesc$, lenDesc%, szDescFile$) AS INTEGER
  83. DECLARE FUNCTION fnnGetQTWVersion LIB "qtw_vers.dll" (ourVersion&) AS INTEGER
  84. DECLARE FUNCTION CallModifyCONFIG LIB "confchk.dll" (WinHandle%) AS INTEGER
  85.  
  86. ''----- Local functions
  87. DECLARE FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) AS INTEGER
  88. DECLARE FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) AS INTEGER
  89. declare sub     CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ )
  90. declare sub     CopyTitleDatabase(pathDatabase$, sectDatabase$ )
  91. declare sub     InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ )
  92. declare sub     CreateTitleIcon( pathBinary$, dllFile$, iconNo$ )
  93. declare sub     CreateMenuIcon( pathBinary$ )
  94. DECLARE SUB      Install
  95. DECLARE FUNCTION MakePath(szDir$, szFile$) AS STRING
  96. DECLARE SUB      UpdateWinG32(szOrig$)
  97.  
  98. INIT:
  99.  
  100.     CUIDLL$   = "ftcuistf.dll"          ''Custom user interface dll
  101.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  102.  
  103.     MajorVer%      = GetWindowsMajorVersion()
  104.     MinorVer%      = GetWindowsMinorVersion()
  105.     Processor%      = GetProcessorType()
  106.     WinDir$       = GetWindowsDir()
  107.     WinSysDir$      = GetWindowsSysDir()
  108.     WinSys32Dir$  = WinDir$ + "system32"
  109.     SrcDir$       = GetSymbolValue("STF_SRCDIR")
  110.     
  111.     'Make sure the user's system can handle Video for Windows
  112.     dummy% = CheckVideoSystem(MajorVer%, MinorVer%, Processor%) 
  113.     IF OnWindowsNT() THEN
  114.         OnNT$ = "TRUE"
  115.     END IF
  116.                            
  117.     'Read setup's .INF file                           
  118.     szInf$ = GetSymbolValue("STF_SRCINFPATH")                                 
  119.     IF szInf$ = "" THEN
  120.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  121.     END IF
  122.     ReadInfFile szInf$
  123.  
  124.     'Divert paint messages of background window to our own routine                      
  125.     dummy% = DivertBackMessage(HwndFrame(), HinstFrame())
  126.     MaxWindowArea(HwndFrame())
  127.     dummy% = ShowBitmap(HwndFrame(), SrcDir$+"logo.bmp",106,1000)     
  128.             
  129.                
  130. WELCOME:
  131.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  132.  
  133.     IF sz$ = "CONTINUE" THEN
  134.         UIPop 1
  135.     ELSE
  136.         GOSUB ASKQUIT
  137.         GOTO WELCOME
  138.     END IF
  139.  
  140.                                                       
  141. GETPATH: 
  142.     AVDest$ = Dir_DefaultInstall
  143.  
  144.     SetSymbolValue "EditTextIn", AVDest$
  145.     SetSymbolValue "EditTextOut", AVDest$
  146.     SetSymbolValue "EditFocus", "END"
  147. GETPATHL1:
  148.     SetSymbolValue "DLGEVENT", ""
  149.  
  150.     sz$ = UIStartDlg(CUIDLL$, ASKPATH, "FEditDlgProc", 0, "")
  151.     AVDest$ = GetSymbolValue("EditTextOut")
  152.     AVDestRoot$ = AVDest$
  153.  
  154.     IF sz$ = "CONTINUE" THEN
  155.         IF IsDirWritable(AVDest$) = 0 THEN 
  156.            GOSUB BADPATH
  157.            GOTO GETPATHL1
  158.         END IF
  159.         UIPop 1
  160.     ELSE 
  161.         IF sz$ = "EXIT" THEN
  162.             GOSUB ASKQUIT
  163.         END IF
  164.         GOTO GETPATH        
  165.     END IF
  166.           
  167.           
  168.     if not Dir_Group = "" then
  169.         AVDest$ = AVDest$ + Dir_Group
  170.     end if
  171.  
  172.     rem *** Prepare copy list
  173.  
  174.     ClearCopyList                                           
  175.  
  176. '$INCLUDE 'init.mst'
  177.  
  178. '$ifdef IsUsingVfW
  179.  
  180.     '' ------------------- Copy list for Video for Windows --------------------
  181.     ''Remove DCISVGA file
  182.  
  183.     RemoveFile WinSysDir$+"dcisvga.drv", cmoForce
  184.  
  185.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN            
  186.             'These files not necessary on Windows NT
  187.         AddSectionFilesToCopyList "VfW MPlayer", SrcDir$, WinDir$
  188.         AddSectionFilesToCopyList "VfW OLE2", SrcDir$, WinSysDir$
  189.     END IF
  190.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  191.     AddSectionFilesToCopyList "VfW ACM Drivers", SrcDir$, WinSysDir$
  192.     AddSectionFilesToCopyList "VfW AVICodecs", SrcDir$, WinSysDir$
  193.     IF OnNT$ = "TRUE" THEN
  194.         AddSectionFilesToCopyList "VfW NT MSVideo", SrcDir$, WinSys32Dir$
  195.     ENDIF
  196. '$endif
  197.  
  198. '' --------------------- Copy list for WinG -----------------------
  199.     AddSectionFilesToCopyList "WinG runtime", SrcDir$, WinSysDir$
  200.     Dest1$ = MakePath (WinSysDir$,"Wing32.dll")
  201.     Dest2$ = MakePath (WinSysDir$,"Wing32.xxx")
  202.     RenameFilePlease Dest1$, Dest2$
  203.  
  204. '$ifdef IsUsingWinToon
  205.  
  206.     '' ---------------------- Copy list for WinToon -----------------------
  207.     AddSectionFilesToCopyList "WinToon runtime", SrcDir$, WinSysDir$
  208. '$endif
  209.  
  210. '' --------------------- Copy list for MediaView ----------------------
  211.     AddSectionFilesToCopyList "MediaView runtime", SrcDir$, WinSysDir$
  212.  
  213.     rem *** Copy list for QuickTime
  214.  
  215.     isInstallQTW = 0
  216.  
  217.     qtwVersion& = 8748
  218.  
  219.     s% = fnnGetQTWVersion( qtwVersion& )
  220.  
  221.     if s% = 1 then
  222.         isInstallQTW = 1
  223.  
  224.         AddSectionFilesToCopyList "QuickTime 2.02 runtime", SrcDir$, WinSysDir$
  225.     endif
  226.  
  227. '' ------------------------ Copy list for ADS -------------------------
  228.     AddSectionFilesToCopyList "ADS", SrcDir$, WinSysDir$
  229.  
  230. '' ------------------------ Copy list for AAPLAY -------------------------
  231.     AddSectionFilesToCopyList "AAPLAY Animation", SrcDir$, WinSysDir$
  232.  
  233. '$ifdef IsEncrypted
  234.     rem *** Copy list for C-Dilla
  235.  
  236.     AddSectionFilesToCopyList "C-Dilla system", SrcDir$, WinDir$
  237. '$endif
  238.  
  239.     rem *** Common utilities and system files
  240.  
  241.     AddSectionFilesToCopyList Sect_GenericUtility, SrcDir$, AVDestRoot$
  242.     AddSectionFilesToCopyList Sect_GenericSystem, SrcDir$, WinSysDir$
  243.  
  244.     if not Dir_Group = "" then
  245.         AddSectionFilesToCopyList Sect_GenericGroupUtility, SrcDir$, AVDest$
  246.         AddSectionFilesToCopyList Sect_GenericGroupBinary, SrcDir$, AVDest$ + Dir_Binary
  247.     end if
  248.  
  249. '$INCLUDE 'copylist.mst'
  250.  
  251. '' -------- Check space on hard disk --------
  252.     SizeReq& = GetCopyListCost ("","", "")
  253.     IF SizeReq& <> 0 THEN
  254.         GOSUB SMALLWIN
  255.         END
  256.     END IF
  257.  
  258.                               
  259. '' Perform install                              
  260.     Install
  261.  
  262. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  263. '' else, it gives the user the choice
  264.     RESTRT% = RestartListEmpty ()
  265.     Exe$ = WinDir$ + "\_msrstrt.exe"
  266.     Batch$ = WinDir$ + "\_mssetup.bat"
  267.     empty$ = ""
  268.  
  269. RESTART:
  270.     IF RESTRT% = 0 THEN
  271.        sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfo0DlgProc", 0, "")
  272.        IF sz$ = "REACTIVATE" THEN
  273.                GOTO RESTART
  274.        ENDIF
  275.        I% = ExitExecRestart ()
  276.        RemoveFile Exe$, cmoForce
  277.        RemoveFile Batch$, cmoForce
  278.        END
  279.     ELSE
  280.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  281.        IF sz$ = "CONTINUE" THEN
  282.                I% = ExitWindowsExec (Exe$, empty$)                             
  283.                IF I% = 0 THEN
  284.                    GOTO RESTART
  285.                ELSE
  286.                  END
  287.                ENDIF
  288.        ELSEIF sz$ = "EXIT" THEN
  289.                UIPopAll
  290.               END
  291.        ELSEIF sz$ = "REACTIVATE" THEN
  292.                GOTO RESTART
  293.        ELSE
  294.               UIPop 1
  295.        END IF
  296.     END IF
  297.  
  298.  
  299. QUIT:
  300.     ON ERROR GOTO ERRQUIT
  301.  
  302.     IF ERR = 0 THEN
  303.         dlg% = EXITSUCCESS
  304.     ELSEIF ERR = STFQUIT THEN
  305.         dlg% = EXITQUIT
  306.     ELSE
  307.         dlg% = EXITFAILURE
  308.     END IF
  309. QUITL1:
  310.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  311.     IF sz$ = "REACTIVATE" THEN
  312.         GOTO QUITL1
  313.     END IF
  314.     UIPop 1
  315.     END
  316.  
  317. ERRQUIT:
  318.     i% = DoMsgBox("An installation problem occured.", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  319.     END
  320.  
  321.  
  322. ASKQUIT:
  323.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  324.  
  325.     IF sz$ = "EXIT" THEN
  326.         UIPopAll
  327. ''        ERROR STFQUIT
  328.     END
  329.     ELSEIF sz$ = "REACTIVATE" THEN
  330.         GOTO ASKQUIT
  331.     ELSE
  332.         UIPop 1
  333.     END IF
  334.     RETURN
  335.  
  336. SMALLWIN:
  337.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  338.     IF sz$ = "REACTIVATE" THEN
  339.         GOTO SMALLWIN
  340.     END IF
  341.     UIPop 1
  342.     RETURN
  343.           
  344. BADPATH:
  345.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  346.     IF sz$ = "REACTIVATE" THEN
  347.         GOTO BADPATH
  348.     END IF
  349.     UIPop 1
  350.     RETURN
  351.  
  352. '**
  353. '** Purpose:
  354. '**     Performs all installation operations.
  355. '** Arguments:
  356. '**     none.
  357. '** Returns:
  358. '**     none.
  359. '*************************************************************************
  360. SUB Install STATIC           
  361.  
  362.     SetRestartDir WinDir$
  363.     CopyFilesInCopyList
  364.     UpdateWinG32 WinSysDir$
  365.  
  366. ''<-------------------- BACK UP INI FILES HERE !!! ---------------------->
  367.     inia$ = MakePath(WinDir$, "win.ini")
  368.     inib$ = MakePath(WinDir$, "win.ftw")
  369.     CopyFile inia$, inib$, cmoOverwrite, 0
  370.     inia$ = MakePath(WinDir$, "system.ini")
  371.     inib$ = MakePath(WinDir$, "system.ftw")
  372.     CopyFile inia$, inib$, cmoOverwrite, 0
  373.                                                                               
  374.                                                                               
  375. '$ifdef IsUsingVfW
  376.  
  377.     ''----------------- Update INI files for Video for Windows ---------------
  378.     ''Updating WIN.INI and SYSTEM.INI
  379.     ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  380.  
  381.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  382.         IF VflatdPresent() = 0 THEN
  383.             CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  384.         END IF
  385.     END IF
  386.  
  387.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  388.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  389.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  390.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "IR32.dll", cmoOverwrite
  391.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  392.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  393.     IF I% = 0  THEN
  394.         CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21_r.dll", cmoOverwrite
  395.     END IF
  396.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "ir21_r.dll", cmoOverwrite
  397.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  398.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  399.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  400.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  401.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  402.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  403.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  404.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  405. '$endif
  406.  
  407.     if isInstallQTW = 1 then
  408.  
  409.         rem *** Update INI files for QuickTime
  410.  
  411.         CreateIniKeyValue "win.ini", "MCI Extensions", "mov", "QTWVideo", cmoOverwrite
  412.         CreateIniKeyValue "win.ini", "MCI Extensions", "pic", "QTWVideo", cmoOverwrite
  413.         CreateIniKeyValue "win.ini", "MCI Extensions", "jpg", "QTWVideo", cmoOverwrite
  414.         i% = WritePrivateProfileString("MCI", "QTWVideo", MakePath(WinSysDir$, "mciqtw.drv"), "SYSTEM.INI")
  415.  
  416.         rem *** Create QTW.INI
  417.         ini$ = MakePath(WinDir$, "qtw.ini")
  418.         CreateIniKeyValue ini$, "QuickTime for Windows", "Implementation", "Full" , cmoOverwrite
  419.         RemoveIniKey ini$, "video", "optimize", cmoNone
  420.     endif
  421.  
  422.     rem Compatibility hacks.
  423.     i% = WritePrivateProfileString("Macx", "DeviceBitmap", "OFF", "system.ini")
  424.     CreateIniKeyValue "win.ini", "Mach", "DeviceBitmap", "off", cmoOverwrite
  425.  
  426.     rem *** Update INI files for AAPLAY
  427.  
  428.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "FullScreen", "AAVGA.DLL", cmoOverwrite
  429.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "DualScreen", "yes", cmoOverwrite
  430.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "Int2fSwitch", "no", cmoOverwrite
  431.     CreateIniKeyValue WinDir$ + "win.ini", "AAPLAY Animation", "WaveAudio", "c,522", cmoOverwrite
  432.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "flc", "Animation1", cmoOverwrite
  433.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "fli", "Animation1", cmoOverwrite
  434.     CreateIniKeyValue WinDir$ + "win.ini", "mci extensions", "aas", "Animation1", cmoOverwrite
  435.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "Animation1", "mciaap.drv", cmoOverwrite
  436.  
  437. '$ifdef IsUsingVfW
  438.  
  439.     ''------ Register Video for Windows components -----
  440.     ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  441.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  442.         Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  443.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  444.         Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  445.                                    
  446.         '' Mplayer
  447.         CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  448.  
  449.     END IF    ''NT and next version of Windows installation stop here.
  450.  
  451.     Run ("profdisp.exe")  ''Profile display for Video for Windows
  452. '$endif
  453.  
  454. '$INCLUDE 'install.mst'
  455.  
  456. '$ifdef IsUsingMenu
  457.     CreateMenuIcon AVDest$ + Dir_Binary
  458. '$endif
  459.  
  460.     CreateProgmanItem PMG_FlagTower, PMI_Uninstall, AVDestRoot$ + "\uninstal.exe", "", cmoOverwrite
  461. '$ifdef IsUsingOnLineReg
  462.     CreateProgmanItem PMG_FlagTower, PMI_OnLineReg, AVDestRoot$ + "\onlinreg.exe", "", cmoOverwrite
  463. '$endif
  464.  
  465.     i% = CallModifyCONFIG( HwndFrame() )
  466.  
  467. REM        Run( "notepad  " + SrcDir$ + "readme.txt" )
  468.  
  469. END SUB
  470.                                                                                               
  471. ' -------------------------------------------------------------------------------------------- 
  472. ' -------------------------------------------------------------------------------------------- 
  473. ' -------------------------------------------------------------------------------------------- 
  474. ' Miscellaneous Functions 
  475. ' -------------------------------------------------------------------------------------------- 
  476.  
  477. '**
  478. '** Purpose:
  479. '**     Appends a file name to the end of a directory path,
  480. '**     inserting a backslash character as needed.
  481. '** Arguments:
  482. '**     szDir$  - full directory path (with optional ending "\")
  483. '**     szFile$ - filename to append to directory
  484. '** Returns:
  485. '**     Resulting fully qualified path name.
  486. '*************************************************************************
  487. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  488.     IF szDir$ = "" THEN
  489.         MakePath = szFile$
  490.     ELSEIF szFile$ = "" THEN
  491.         MakePath = szDir$
  492.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  493.         MakePath = szDir$ + szFile$
  494.     ELSE
  495.         MakePath = szDir$ + "\" + szFile$
  496.     END IF
  497. END FUNCTION
  498.  
  499. SUB UpdateWinG32(szOrig$) STATIC
  500.     '
  501.     ' Check the version of wing32.dll since cannot get version
  502.     ' checking for Win32 apps from Win16
  503.     '
  504.     FileNew$  = MakePath(szOrig$, "wing32.dll")
  505.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  506.  
  507.     IF IsWin32FileNewer(FileOrig$, FileNew$) THEN
  508.         RemoveFile FileOrig$, cmoForce
  509.     ELSE
  510.         RemoveFile FileNew$, cmoForce
  511.         RenameFilePlease FileOrig$, FileNew$
  512.     END IF
  513. END SUB                                                                
  514.                                                         
  515.                                                      
  516. FUNCTION CreateTitleINIFile(szINI$, szCD$, szDbPath$) STATIC AS INTEGER
  517.  
  518.     ramSize% = getSystemRAM()
  519.     ramSizeStr$ = str$( ramSize% )
  520.     ramSizeStr$ = ltrim$( ramSizeStr$ )
  521.  
  522.     CreateIniKeyValue szINI$, "METRICS", "CDROM", szCD$ , cmoOverwrite
  523.     CreateIniKeyValue szINI$, "METRICS", "RAM", ramSizeStr$, cmoOverwrite
  524.     CreateIniKeyValue szINI$, "METRICS", "VOLUME", "5" , cmoOverwrite
  525.  
  526.     CreateIniKeyValue szINI$, "DBPATH", "ROUTING", szDbPath$+"\ROUTING.MBF" , cmoOverwrite
  527.     CreateIniKeyValue szINI$, "DBPATH", "RUNTIME", szDbPath$+"\RUNTIME.MBF" , cmoOverwrite
  528.     CreateIniKeyValue szINI$, "DBPATH", "UNITBASE", szDbPath$+"\UNITBASE.MBF" , cmoOverwrite
  529.     CreateIniKeyValue szINI$, "DBPATH", "FILEBASE", szDbPath$+"\FILEBASE.MBF" , cmoOverwrite
  530.     CreateIniKeyValue szINI$, "DBPATH", "TIMELINE", szDbPath$+"\TL_BASE.MBF" , cmoOverwrite
  531.     CreateIniKeyValue szINI$, "DBPATH", "GCACHE", szDbPath$+"\GCACHE.MBF" , cmoOverwrite
  532.  
  533.     CreateTitleINIFile = 0                                              
  534.     
  535. END FUNCTION                                               
  536.  
  537. sub CopyTitleBinaries(pathBinary$, sectBinary$, sectCDilla$, sectEngine$, sectAccusoft$ ) static
  538.  
  539.     rem *** Copy list for Accusoft Pro Gold
  540.  
  541.     AddSectionFilesToCopyList sectAccusoft$, SrcDir$, pathBinary$
  542.  
  543. '$ifdef IsEncrypted
  544.     rem *** Copy list for C-Dilla
  545.  
  546.     AddSectionFilesToCopyList Sect_CDillaSystem, SrcDir$, WinDir$
  547.     AddSectionFilesToCopyList sectCDilla$, SrcDir$, pathBinary$
  548. '$endif
  549.  
  550.     rem *** Copy list for AV ENGINE
  551.  
  552.     AddSectionFilesToCopyList sectEngine$, SrcDir$, pathBinary$
  553.  
  554.     rem *** Copy list for title
  555.  
  556.     AddSectionFilesToCopyList sectBinary$, SrcDir$, pathBinary$
  557.  
  558.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 0, 1 )
  559.  
  560. end sub
  561.  
  562. sub CopyTitleDatabase(pathDatabase$, sectDatabase$ ) static
  563.  
  564.     AddSectionFilesToCopyList sectDatabase$, SrcDir$, pathDatabase$
  565.  
  566. end sub
  567.  
  568. sub InstallTitle( pathRoot$, pathBinary$, pathDatabase$, iniFile$, dllFile$, iconNo$ ) static
  569.  
  570.     CDDrive$ = MID$(SrcDir$,1,1)          
  571.  
  572.     CreateDir pathRoot$, cmoNone
  573.     CreateDir pathBinary$, cmoNone
  574.     CreateDir pathDatabase$, cmoNone
  575.     dummy% = CreateTitleINIFile( pathBinary$+"\"+iniFile$, CDDrive$, pathDatabase$ )
  576.  
  577.     rem *** Change file attribute of 'flagtowr.ttl' to Read-only+Hidden
  578.  
  579.     dummy% = setDOSFileAttr( pathBinary$ + FN_Description, 3, 1 )
  580.  
  581.     rem *** create unitdb.mbf in title database directory to aid performance
  582.  
  583. rem    CopyFile pathDatabase+"\unitbase.mbf", pathDatabase+"\unitdb.mbf", cmoOverwrite, 0
  584.  
  585. end sub
  586.  
  587. sub CreateMenuIcon( pathBinary$ ) static
  588.  
  589.     dim    PMI_Title as string
  590.  
  591.     PMI_Title = string$( 110, 32 )
  592.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  593.  
  594.     rem *** Create Program Manager Group
  595.  
  596.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  597.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  598.     
  599.     rem *** Create Icon(s)
  600.  
  601.     s% = pmDeleteItem( PMI_Title )
  602.  
  603.     CreateProgmanItem PMG_FlagTower, PMI_Title, AVDest$ + "\prommenu.exe" + " " + AVDest$, "", cmoOverwrite
  604.  
  605. end sub
  606.  
  607. sub CreateTitleIcon( pathBinary$, dllFile$, iconNo$ ) static
  608.  
  609.     dim    PMI_Title as string
  610.     dim    PMI_ReadMe as string
  611.     dim    Cmd_ReadMe as string
  612.  
  613.     PMI_Title = string$( 110, 32 )
  614.     s% = readTitleDescription( PMI_Title, 110, pathBinary$ + FN_Description )
  615.  
  616.     rem *** Create Program Manager Group
  617.  
  618.     CreateProgmanGroup PMG_FlagTower, "", cmoNone
  619.     ShowProgmanGroup PMG_FlagTower, 1, cmoNone
  620.     
  621.     rem *** Create Icon(s)
  622.  
  623.     s% = pmDeleteItem( PMI_Title )
  624.  
  625.     TitleDLL$ = pathBinary$+"\"+dllFile$
  626.     Launch$   = pathBinary$+"\LAUNCH.EXE "
  627.  
  628.     if len( iconNo$ ) = 1 then
  629.  
  630. '$ifdef IsEncrypted
  631.         Other$    = pathBinary$+"\ZLAUNCH.EXE "
  632. '$else
  633.         Other$    = Launch$
  634. '$endif
  635.  
  636.         Other$    = Other$ + "," + iconNo$
  637.  
  638.     else
  639.  
  640.         Other$ = pathBinary$ + iconNo$ + ",0"
  641.  
  642.     end if
  643.  
  644.     Other$ = Other$ + ",0,0," + pathBinary$
  645.  
  646.     rem *** Icon for title
  647.  
  648.     CreateProgmanItem PMG_FlagTower, PMI_Title, Launch$+TitleDLL$, Other$, cmoOverwrite
  649.  
  650.     rem *** Icon for readme
  651.  
  652.     PMI_ReadMe = PMI_Title + " - Read me"
  653.     Cmd_ReadMe = pathBinary$ + FN_ReadMe
  654.  
  655.     CreateProgmanItem PMG_FlagTower, PMI_ReadMe, Cmd_ReadMe , "" , cmoOverwrite
  656.  
  657. end sub
  658.  
  659. FUNCTION CheckVideoSystem(WinMajVer%, WinMinVer%, ProcType%) STATIC AS INTEGER
  660. 'Check if system have necessary processor and version of Windows running to install Video for Windows
  661.     ''Video for Windows tests
  662.     IF WinMajVer% < 3 OR (WinMajVer% = 3 AND WinMinVer% < 10) THEN
  663.         i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  664.         END
  665.     END IF
  666.  
  667.     'Prevents installation on 286
  668.     IF ProcType% < 3 THEN
  669.         i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  670.         END
  671.     END IF
  672.  
  673.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  674.     IF OnWindowsNT() THEN
  675.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  676.       IF WowVersion$ = "" THEN
  677.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  678.          END
  679.       END IF
  680.     END IF
  681.  
  682. END FUNCTION
  683.